Deterministically Executing Concurrent Programs for Testing and Debugging
نویسندگان
چکیده
Non-determinism is a serious problem in the testing and debugging of concurrent programs. Thread interleavings may be different on each run, changing the order of events. Testing a concurrent program requires many of these orders to be run, either to determine that all orders produce correct results or to identify the presence of timing-dependent errors called race conditions. This paper presents preliminary work in deterministically executing a concurrent program using a combination of an intermediate compiler form and aspect-oriented programming. Specifically, we execute the code generated for the intermediate compiler form using aspects to control the value returned for the read of any shared variable. This allows us to deterministically execute specific test cases. This work is preliminary, with many outstanding issues, but we feel the technique shows promise.
منابع مشابه
Choosing Among Alternative Futures
Non-determinism is a serious impediment to testing and debugging concurrent programs. Such programs do not execute the same way each time they are run, which can hide the presence of errors. Existing techniques use a variety of mechanisms that attempt to increase the probability of uncovering error conditions by altering the execution sequence of a concurrent program, but do not test for specif...
متن کاملFirst-class Concurrency Testing and Debugging
Unfortunately, the design of concurrent programs is a very challenging task. The main intellectual difficulty of concurrent programming lies in reasoning about the interaction between concurrently executing threads. Nondeterministic thread scheduling makes it extremely difficult to reproduce behavior from one run of a program to another. As a result, the process of testing and debugging concurr...
متن کاملIntegrating functional modeling and trace-driven parallel debugging
For analyzing parallel and distributed programs, a systematic method for understanding the complex dynamic behavior of concurrent process interactions and dependencies is a must. Integrating functional modeling and trace-driven post-mortem debugging, we have developed a new approach for debugging parallel programs. Bevor executing measurements, a model is created for defining events systematica...
متن کاملDebugging Concurrent Programs with Sequential Analysis
The design of concurrent programs is error-prone due to the interaction between concurrently executing threads. Traditional automated techniques for finding errors in concurrent programs, such as model checking, explore all possible thread interleavings. Since the number of thread interleavings increases exponentially with the number of threads, such analyses have high computational complexity....
متن کاملPublication III
This article describes a study of the defects in the programs students have written as solutions for the programming assignments in a concurrent programming course. I describe the underlying causes of these defects and the applications in developing teaching, grading and debugging of this information. I present the effects of the students’ approaches to constructing and testing programs on thei...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2006